home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok19
/
area
/
area.def
next >
Wrap
Text File
|
1993-11-04
|
3KB
|
66 lines
(*---------------------------------------------------------------------------
:Program. Area.def
:Contents. Simple und korrekte Benutzung von Graphics.Area..
:Author. Bernd Preusing
:Address. Gerhardstr. 16 D-2200 Elmshorn
:Phone. 04121/22486
:Copyright. Public Domain
:Language. Modula-2
:Translator. M2Amiga V3.2e
:History. V1.0 Preusing 27-Apr-89
:Bugs. falls RastPort nicht initialisiert: Guru oder schlimmer
:Remark. Graphics.AreaMove etc. liefern ein Resultat zurück,
:Remark. dies wird hier mittels Arts.Assert unterdrückt.
:Remark. Gemischter Betrieb von Polygonen und Ellipsen führt
:Remark. unter graphics.library zu Fehlern und Abstürzen,
:Remark. dies Modul verhindert das.
---------------------------------------------------------------------------*)
(* $N- (Parameter-Namen nicht in sym-File) *)
DEFINITION MODULE Area;
FROM SYSTEM IMPORT ADDRESS;
FROM Graphics IMPORT RastPortPtr;
TYPE
(* SpeicherProzedur für InitArea, z.B. Heap.AllocMem;
sie muß auch unbedingt den Speicher löschen!!: *)
AllocProc = PROCEDURE (VAR ADDRESS, LONGINT, BOOLEAN);
PROCEDURE InitArea(Rp: RastPortPtr; MaxVectors: INTEGER; Alloc: AllocProc);
(* :Input. Rp: zu initialisierender RastPort
:Input. MaxVectors: maximale Punktzahl vor AreaEnd. Falls
:Input. mehr benötigt werden: Assert.
:Input. Eine Ellipse benötigt nur 2 Punkte, 20
:Input. bis 50 reicht also allemal!
:Input. Alloc: Prozedur zur Speicheranforderung (z.B. Heap.AllocMem)
:Semantic. Der RastPort wird für Area-Operationen initialisiert,
:Semantic. alle nötigen Puffer werden alloziert. Die Verantwortung
:Semantic. für die Speicherfreigabe muß eine TermProcedure tragen!
*)
PROCEDURE AreaMove(Rp: RastPortPtr; x,y: INTEGER);
(* :Semantic. Bewegt den Area-Zeiger nach x,y und
:Semantic. schließt ein evtl. vorher begonnenes Polygon.
*)
PROCEDURE AreaDraw(Rp: RastPortPtr; x,y: INTEGER);
(* :Semantic. Zeichnet eine Area-Linie nach x,y.
*)
PROCEDURE AreaEllipse(Rp: RastPortPtr; mx,my,rx,ry: INTEGER);
(* :Semantic. Zeichnet eine Ellipse mit Mittelpunkt mx,my und den
:Semantic. Radien rx und ry.
*)
PROCEDURE AreaCircle(Rp: RastPortPtr; mx,my, r: INTEGER);
(* :Semantic. Zeichnet einen Kreis mit dem Mittelpunkt mx,my
:Semantic. und dem Radius r.
*)
PROCEDURE AreaEnd(Rp: RastPortPtr);
(* :Semantic. schließt ein evtl. vorher begonnenes Polygon und startet
:Semantic. die eigentliche Fülloperation.
*)
END Area.def